prolog './g0a.ijs'
NB. handling empty arrays -----------------------------------------------

(i.n) -: /: (n,0 5)$0    [ n=:0
(i.n) -: /: (n,0  )$0    [ n=:?1000
(i.n) -: /: (n,0  )$'a'  [ n=:0
(i.n) -: /: (n,4 0)$'a'  [ n=:?1000
(i.n) -: /: i.n,0 5      [ n=:0
(i.n) -: /: i.n,0        [ n=:?1000
(i.n) -: /: (n,0 5)$3.4  [ n=:0
(i.n) -: /: (n,0  )$3.4  [ n=:?1000
(i.n) -: /: (n,0 5)$3j4  [ n=:0
(i.n) -: /: (n,0  )$3j4  [ n=:?1000
(i.n) -: /: (n,0 5)$<'a' [ n=:0
(i.n) -: /: (n,0  )$<'a' [ n=:?1000

(i.n) -: \: (n,0 5)$0    [ n=:0
(i.n) -: \: (n,0  )$0    [ n=:?1000
(i.n) -: \: (n,0  )$'a'  [ n=:0
(i.n) -: \: (n,4 0)$'a'  [ n=:?1000
(i.n) -: \: i.n,0 5      [ n=:0
(i.n) -: \: i.n,0        [ n=:?1000
(i.n) -: \: (n,0 5)$3.4  [ n=:0
(i.n) -: \: (n,0  )$3.4  [ n=:?1000
(i.n) -: \: (n,0 5)$3j4  [ n=:0
(i.n) -: \: (n,0  )$3j4  [ n=:?1000
(i.n) -: \: (n,0 5)$<'a' [ n=:0
(i.n) -: \: (n,0  )$<'a' [ n=:?1000

(":0 2 3$'a') -: ":0 2 3$1
(":0 2 3$'a') -: ":0 2 3$4
(":0 2 3$'a') -: ":0 2 3$3.4
(":0 2 3$'a') -: ":0 2 3$3j4
(":0 2 3$'a') -: ":0 2 3$<'a'

(":0 2 3$u:'a') -: ":0 2 3$1
(":0 2 3$u:'a') -: ":0 2 3$4
(":0 2 3$u:'a') -: ":0 2 3$3.4
(":0 2 3$u:'a') -: ":0 2 3$3j4
(":0 2 3$u:'a') -: ":0 2 3$<u:'a'
(":0 2 3$u:'a') -: ":0 2 3$<'a'
(":0 2 3$u:'a') -: ":0 2 3$<10&u:'a'

(":0 2 3$10&u:'a') -: ":0 2 3$1
(":0 2 3$10&u:'a') -: ":0 2 3$4
(":0 2 3$10&u:'a') -: ":0 2 3$3.4
(":0 2 3$10&u:'a') -: ":0 2 3$3j4
(":0 2 3$10&u:'a') -: ":0 2 3$<10&u:'a'
(":0 2 3$10&u:'a') -: ":0 2 3$<'a'
(":0 2 3$10&u:'a') -: ":0 2 3$<u:'a'

(":0 2 3$s:@<"0 'a') -: ":0 2 3$1
(":0 2 3$s:@<"0 'a') -: ":0 2 3$4
(":0 2 3$s:@<"0 'a') -: ":0 2 3$3.4
(":0 2 3$s:@<"0 'a') -: ":0 2 3$3j4
(":0 2 3$s:@<"0 'a') -: ":0 2 3$s:@<"0&.> <'a'
(":0 2 3$s:@<"0 'a') -: ":0 2 3$<"0@s: <'a'

NB. type of empty arithmetic arrays
empties =: (0$0);'';(0$00);(0$0.);(0$0.j0.);(0$a:);(0$1x);(0$1r2)
nonempties =: 0;' ';00;0.;0.j0.;a:;1x;1r2
(".;._2 (0 : 0)) -: empties 3!:0@:+&>/ nonempties
  4 4   4  8 16 4  64 128
  4 4   4  8 16 4  64 128
  4 4   4  8 16 4  64 128
  8 4   8  8 16 4   8   8
 16 4  16 16 16 4  16  16
  4 4   4  8 16 4  64 128
 64 4  64  8 16 4  64 128
128 4 128  8 16 4 128 128
)
(".;._2 (0 : 0)) -: empties 3!:0@:*&>/ nonempties
  1 1   4  8 16 1  64 128
  1 1   4  8 16 1  64 128
  4 1   4  8 16 1  64 128
  8 1   8  8 16 1   8   8
 16 1  16 16 16 1  16  16
  1 1   4  8 16 1  64 128
 64 1  64  8 16 1  64 128
128 1 128  8 16 1 128 128
)
(".;._2 (0 : 0)) -: empties 3!:0@:-&>/ nonempties
  4 4   4  8 16 4  64 128
  4 4   4  8 16 4  64 128
  4 4   4  8 16 4  64 128
  8 4   8  8 16 4   8   8
 16 4  16 16 16 4  16  16
  4 4   4  8 16 4  64 128
 64 4  64  8 16 4  64 128
128 4 128  8 16 4 128 128
)

  
1 1 4 8 16 1 64 128 -: 3!:0@:+&> empties
1 1 4 4 16 1 64 64 -: 3!:0@:*&> empties
1 1 4 8 16 1 64 128 -: 3!:0@:*:&> empties





epilog''

